package com.example.netty.netty.handler;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

public class MyByteToLongDecoder extends ByteToMessageDecoder {
    /**
     * 重复执行此方法直到没有新的字节或没有新的数据加入List为止，如果list不为空则传递给下一个ChannelInboundHandler
     * 下一个handler也会重复执行多次
     * @param ctx 上下文对象
     * @param byteBuf 入站的数据buffer
     * @param list list集合，存放交给下一个handler的数据
     * @throws Exception
     */
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf byteBuf, List<Object> list) throws Exception {
        //long八个字节，大于八个字节才读一次
        System.out.println("正在解码。。。");
        if (byteBuf.readableBytes() >= 8) {
            list.add(byteBuf.readLong());
        }
    }
}












